Digital data transmissions over wired and wireless links sometimes may be corrupted, for instance, by noise in the link or channel, by interference from other transmissions, or by other environmental factors. To combat the errors introduced by the channel, many communication systems employ error-correction techniques to aid in communication.
One technique utilized for error correction is turbo coding of an information block to be transmitted. Utilizing such a technique, an encoder within the transmitter of a communication system will encode an input block u of length K bits into a codeword block x of N bits. The codeword block x is then transmitted over the channel, possibly after further processing such as channel interleaving as defined in the IEEE 802.16e specifications. At the receiver, the turbo decoder takes the received signal vector y of length N as input, and generates an estimate û of vector u.
Typically the turbo encoder is composed of two constituent convolutional encoders. The first constituent encoder takes the input block u as input in its original order, and the second constituent encoder takes the input block u in its interleaved order after passing u through a turbo interleaver π. The turbo encoder output x is composed of the systematic bits (equal to the input block u), the parity bits from the first constituent encoder, and the parity bits from the second constituent encoder.
Correspondingly the turbo decoder within the receiver of the communication system is composed of two constituent convolutional decoders, one for each constituent code. The constituent decoders are separated by the interleaver π and the corresponding deinterleaver π−1. Messages in the format of log-likelihood ratios (LLRs) are passed between the constituent decoders iteratively. The decision û is made after several iterations.
The turbo interleaver π is the key component in the turbo code design. It is responsible for scrambling the input block u in a pseudo-random fashion, thus providing the codewords x with good weight distribution, hence good error-correcting capabilities. In addition to decoding performance, the turbo interleaver π has significant impact on the implementation of the turbo decoder within the receiver. Usually, turbo codes performance improves with increasing interleaver length. However, there is a diminishing return in increasing the interleaver size. In practice, the maximum Forward Error Correction (FEC) block size (i.e., interleaver size) of a turbo code is limited to a certain value due to complexity and delay reasons. Hence, if the size of the input block (concatenated transport block or CTB) is larger than the maximum FEC block size supported by the turbo code, the CTB is segmented (e.g., using code block segmentation rule) into several small segments, each of which is processed separately by the turbo encoder at the transmitter and correspondingly by the turbo decoder at the receiver.
In some systems, the turbo code may be designed to support only a small number of FEC block sizes for various reasons (e.g., high speed decoding, reduced storage, etc). Therefore, a need exists for a method and apparatus for turbo coding and decoding that appropriately matches the CTB to available FEC block sizes.